"""
Case Type   : 系统内部使用工具 gs_sshexkey
Case Name   : root用户下，执行gs_sshexkey -? 命令
Create At   : 2021/1/27
Owner       : opentestcase001
Description :
    1、root用户下，执行gs_sshexkey -?
    2、检查选项和用法
Expect      :
    1、命令执行成功
    2、用法和参数选项齐全且描述正确
History     :
    modeified by opentestcase001 at 2022/3/2:优化工具参数信息，适配3.0.0新版本
    modeified by wx5318640 at 2023/3/31:优化判断方式
"""

import unittest
import os
from yat.test import Node
from yat.test import macro
from testcase.utils.Logger import Logger
from testcase.utils.CommonSH import CommonSH

logger = Logger()


class ToolsTestCase(unittest.TestCase):
    def setUp(self):
        self.commonsh = CommonSH('PrimaryDbUser')
        self.user_node = Node('PrimaryRoot')
        logger.info("-----SetUp：检查数据库状态是否正常-----")
        status = self.commonsh.get_db_cluster_status()
        self.assertTrue("Degraded" in status or "Normal" in status)

    def test_gs_sshexkey(self):
        logger.info(f"-----{os.path.basename(__file__)} start-----")

        num_list = []
        result = ['-f', '-l', '--skip-hostname-set',
                  '-?', '--help', '-V', '--version']

        logger.info("-----root用户下执行gs_sshexkey -?命令-----")
        gs_cmd = f'''source {macro.DB_ENV_PATH}
            gs_sshexkey -?
            '''
        logger.info(gs_cmd)
        gs_res = self.user_node.sh(gs_cmd).result()
        logger.info(gs_res)

        logger.info("-----提取结果，检查选项和用法-----")
        for i in gs_res.split('\n')[8:]:
            for j in i.split():
                if j.strip().startswith('-'):
                    num_list.append(j.strip().strip(','))
        for con in result:
            self.assertIn(con, num_list)

    def tearDown(self):
        logger.info("-----No Need Clean && No Need Recovery-----")
        logger.info(f"--------{os.path.basename(__file__)} end--------")
